Advanced Usage
Looking around in the container
It's possible to start a shell in the container. Simply use this docker command:
docker run -v /path/to/shared-dir:/home/build/shared -i -t D-Programming-GDC/build-gdc /bin/bash
It's then possible to build toolchains by calling build-gdc
in the shell.
The container has gdb and nano pre-installed to ease debugging. For more
information see the Internals documentation.
Building custom GDC code
It's possible to use this container to build GDC code which is not available in the official repository.
Building a revision once
If you simply want to build a different revision once, first start a shell in the container:
docker run -v /path/to/shared-dir:/home/build/shared -i -t D-Programming-GDC/build-gdc /bin/bash
Then change the directory to the GDC
or build-gdc-config
folder
and add the remote repo:
cd GDC
git remote add jpf91 https://github.com/jpf91/GDC.git
cd ../build-gdc-config
git remote add jpf91 https://github.com/jpf91/build-gdc-config.git
The build-gdc
tool always updates all repositories. So if you refer to a branch
in your build command you'll always get the latest revision on that branch.
Now simply call build-gdc
:
build-gdc build --toolchain=x86_64-w64-mingw32/gcc-4.9/arm-gdcproject-linux-gnueabihf --config-revision=jpf91/master --revision=V4_9:jpf91/gdc-4.9
All changes in the docker container are transient. As soon as you exit
from the shell all changes made in the container are lost and you start
with a clean system again.
Adding a repository for continuous building
If you want to build from one git repository repeatedly, the best way
is to create a derived docker container. Simply save this code to a file
called Dockerfile
in an empty directory. Make sure to adjust your repositories:
FROM d-programming-gdc:build-gdc
RUN cd GDC \
&& git remote add jpf91 https://github.com/jpf91/GDC.git \
&& cd ../build-gdc-config \
&& git remote add jpf91 https://github.com/jpf91/build-gdc-config.git
Then cd into the directory and build the container:
docker build -t jpf91/build-gdc .
You can now use your container by specifying jpf91/build-gdc
instead
of D-Programming-GDC/build-gdc
:
docker run -v /path/to/shared-dir:/home/build/shared -t jpf91/build-gdc /usr/bin/build-gdc build --toolchain=x86_64-w64-mingw32/gcc-4.9/arm-gdcproject-linux-gnueabihf --revision=V4_9:jpf91/gdc-4.9
Note: we recommend to not use a git fetch
command in the Dockerfile
.
build-gdc
updates all repositories before building, so it's not necessary.
If you use git fetch
in the Dockerfile
and rebase your branches
after the container has been built the build-gdc
command might fail to update
the git repository.